#ifndef QUEUE_HPP
#define QUEUE_HPP

#include <stdint.h>
#include <stdbool.h>
#include "FreeRTOS.h"
#include "queue.h"

namespace systemos
{
	class Queue
	{
		private:
			QueueHandle_t mQueueHandle;
		public:
			/** 
			* @brief      构造函数
			* @param[in]   uiLen消息队列长度
			* @param[in]   uiItemSize数据大小
			* @retval    	 None
			*/
			Queue (uint32_t uiLen, uint32_t uiItemSize);
			
			/** 
			* @brief      析构函数
			* @retval     None
			*/
			~Queue (void);

			/** 
			* @brief       发送
			* @param[in]   Item 数据
			* @param[in]   uiWait等待时间
			* @retval    	  操作结果
			*/
			bool Send(void *Item, uint32_t uiWait);
			
			/** 
			* @brief       无等待时间发送
			* @param[in]   Item 数据
			* @retval    	  操作结果
			*/
			bool Send(void *Item);

			/** 
			* @brief       	接收
			* @param[out]   Item数据
			* @param[in]   	uiWait等待时间
			* @retval    	  	操作结果
			*/
			bool Recevie(void *Item, uint32_t uiWait);
			
			/** 
			* @brief       	无等待时间接收
			* @param[out]   Item数据
			* @retval    	  操作结果
			*/
			bool Recevie(void *Item);
			
	};
}

#endif
